package it.uniroma2.orchestrator;

import it.uniroma2.gestoreontologie.Gestore;
import it.uniroma2.model.wizard.Parametri;
import it.uniroma2.model.wizard.Risposta;

import java.io.Serializable;
import java.util.Vector;

import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.ProfileRegistry;
import com.hp.hpl.jena.rdf.model.ModelFactory;

public class Regola implements Serializable{
	
	private Vector<Condizione> condizioni;
	private String classe;
		
	public Regola(String classe){
		this.condizioni = new Vector<Condizione>();
		this.classe = classe;
		
	}
	
	public void aggiungiCondizione(String elemento, boolean esiste, boolean not, String uguale){
		this.condizioni.addElement( new Condizione(elemento, esiste, not, uguale) );
	}
	
	public Vector<String> eseguiRegola(Vector<Risposta> risposta){
		if(verificaCondizioni(risposta)){
			return this.eseguiQuery();
		}else return null;
	}
	
	
	private boolean verificaCondizioni(Vector<Risposta> risposta) {
		for(int i = 0; i<this.condizioni.size(); i++){
			if(!this.condizioni.elementAt(i).verifica(risposta)) return false;
		}
		return true;
	}

	private String ricavaFormato(String uri){
		int tmp = uri.lastIndexOf('.');
		return uri.substring(tmp + 1);
	}
	
	public Vector<String> eseguiQuery(){
		Vector<String> vettoreServizi = new Vector<String>(); 
		Gestore gestore = new Gestore(Parametri.NS,Parametri.URI_SERVIZI);
		vettoreServizi = gestore.cercaIndividual(this.classe);
		return vettoreServizi;
	}
	
}